package org.demos.client.http;

import org.demos.client.pojo.HeartbeatRequest;
import org.demos.client.pojo.HeartbeatResponse;
import org.demos.client.pojo.RegisterRequest;
import org.demos.client.pojo.RegisterResponse;

/**
 * 负责发送各种 http 请求的组件
 *
 * @author bing.zhang06@hand-china.com 2021/10/26 11:06
 **/
public class HttpSender {
    /**
     * 发送注册请求
     *
     * @param request 请求
     * @return 响应
     */
    public RegisterResponse register(RegisterRequest request) {
        // 实际上会基于类似 HttpClient 这种开源的网络包
        // 你可以去构造一个请求，里面放入这个服务实例的信息，比如服务名称，ip地址，端口号
        // 然后通过这个请求发送过去
        // 这里就模拟一下
        System.out.println("服务实例【" + request + "】，发送请求进行注册......");

        // 收到register-server响应之后，封装一个Response对象
        RegisterResponse response = new RegisterResponse();
        response.setStatus(RegisterResponse.SUCCESS);

        return response;
    }

    /**
     * 发起心跳请求
     *
     * @param request 请求
     * @return 响应
     */
    public HeartbeatResponse heartbeat(HeartbeatRequest request) {
        System.out.println("服务实例【" + request + "】，发送请求进行心跳......");

        HeartbeatResponse response = new HeartbeatResponse();
        response.setStatus(RegisterResponse.SUCCESS);

        return response;
    }
}
